package com.kinth.work.tyc;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.xml.sax.SAXException;

/**
 * 
 * <p>
 * Title: 调用PhantomJS来抓取动态网页。
 * </p>
 *1. 目前这个用来抓取各个列表的入口，也就是总开始页面抓取各个地区的链接。这个程序单独运行。可以每个一段时间更新一次。因为
 *phantomjs的效果不稳定。所以就没有和总的抓取程序整合到一起。dbutil也是定制的。对应的表是tyc_location.
 *2. 最好给表加上时间那一项。
 * </p>
 * 
 * @author 23192
 * @2017年3月30日
 */
public class JSUtil
{

	// 如果要更换运行环境，请注意exePath最后的phantom.exe需要更改。因为这个只能在window版本上运行。前面的路径名
	// 也需要和exePath里面的保持一致。否则无法调用
	private static String projectPath = System.getProperty("user.dir");
	//private static String jsPath = projectPath + File.separator + "huicong.js";
	private static String jsPath = projectPath + File.separator + "huicong.js";
	private static String exePath = projectPath + File.separator + "phantomjs" + File.separator + "bin" + File.separator
			+ "phantomjs.exe";

	public static void main(String[] args) throws IOException, SAXException
	{

		// 测试调用。传入url即可
		String html = getParseredHtml2("http://www.tianyancha.com/");
		System.out.println("html: " + html);
		
		String sTemp[] = html.split("industry_container bace_box");
		if(sTemp.length ==2)
		{
			html = sTemp[1];
			
			sTemp = html.split("industry_container ng-hide");
			html = sTemp[0];
			
			if(html!=null&&!html.isEmpty())
			{
				 String regex;
			     System.out.println("包含各个地域："+html);
			     regex = "<a[\\s\\S]*?(http://[a-zA-Z0-9]+.tianyancha.com/search)[\\s\\S]*?>•</span> ([\\s\\S]*?)</a>";
			     Pattern pa = Pattern.compile(regex, Pattern.DOTALL);
			     Matcher ma = pa.matcher(html);
			     while (ma.find())
			     {
			      //System.out.println("测试5： "+ma.group(0));
			      String url = ma.group(1);
			      String location = ma.group(2);
			      TYCurl tycUrl = new TYCurl();
			      tycUrl.setLocation(location);
			      tycUrl.setUrl(url);
			      dbUtil.insertUrl(tycUrl, "tyc_location");
			     }
			}
		}
	}

	// 调用phantomjs程序，并传入js文件，并通过流拿回需要的数据。
	public static String getParseredHtml2(String url) throws IOException
	{
		Runtime rt = Runtime.getRuntime();
		Process p = rt.exec(exePath + " " + jsPath + " " + url);
		InputStream is = p.getInputStream();
		BufferedReader br = new BufferedReader(new InputStreamReader(is));
		StringBuffer sbf = new StringBuffer();
		String tmp = "";
		while ((tmp = br.readLine()) != null)
		{
			sbf.append(tmp);
		}
		//System.out.println("html: "+sbf.toString());

		return sbf.toString();
	}

} 